package cn.iocoder.yudao.module.blog.service.caselike;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.blog.controller.admin.caselike.vo.*;
import cn.iocoder.yudao.module.blog.dal.dataobject.caselike.BlogCaseLikeDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.blog.dal.dataobject.jiucase.BlogJiuCaseDO;

/**
 * 案例点赞 Service 接口
 *
 * @author 曹建伟
 */
public interface BlogCaseLikeService {

    /**
     * 创建案例点赞
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createCaseLike(@Valid BlogCaseLikeCreateReqVO createReqVO);

    /**
     * 更新案例点赞
     *
     * @param updateReqVO 更新信息
     */
    void updateCaseLike(@Valid BlogCaseLikeUpdateReqVO updateReqVO);

    /**
     * 删除案例点赞
     *
     * @param id 编号
     */
    void deleteCaseLike(Long id);

    /**
     * 获得案例点赞
     *
     * @param id 编号
     * @return 案例点赞
     */
    BlogCaseLikeDO getCaseLike(Long id);

    /**
     * 获得案例点赞列表
     *
     * @param ids 编号
     * @return 案例点赞列表
     */
    List<BlogCaseLikeDO> getCaseLikeList(Collection<Long> ids);

    /**
     * 获得案例点赞分页
     *
     * @param pageReqVO 分页查询
     * @return 案例点赞分页
     */
    PageResult<BlogCaseLikeDO> getCaseLikePage(BlogCaseLikePageReqVO pageReqVO);

    /**
     * 获得案例点赞列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 案例点赞列表
     */
    List<BlogCaseLikeDO> getCaseLikeList(BlogCaseLikeExportReqVO exportReqVO);

    /**
     * 获得案例点赞列表
     *
     * @param memberId 会员id
     * @param caseIds 帖子id
     * @return 帖子点赞列表
     */
    List<BlogCaseLikeDO> getCaseLikeList(Long memberId, Collection<Long> caseIds);

}
